#pragma once
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <Wire.h>

// WiFi 连接成功
const uint8_t wifi_connected_icon[] = {
    0x00, 0x00, 0x01, 0x80, 0x07, 0xE0, 0x1E, 0x78, 0x38, 0x1C, 0x70,
    0x0E, 0x00, 0x00, 0x01, 0x80, 0x03, 0xC0, 0x00, 0x00, 0x01, 0x80,
    0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// WiFi 连接断开 (×)
const uint8_t wifi_disconnected_icon[] = {
    0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x30, 0x0C, 0x18, 0x18, 0x0C,
    0x30, 0x06, 0x60, 0x03, 0xC0, 0x03, 0xC0, 0x06, 0x60, 0x0C, 0x30,
    0x18, 0x18, 0x30, 0x0C, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00};
/**
 * @brief 简洁的OLED驱动封装（I2C接口）
 */
class OLEDDisplay {
   public:
    // 初始化OLED（地址：0x3C，引脚：SDA=21, SCL=22,）
    OLEDDisplay(uint8_t addr = 0x3C, uint8_t sda = 21, uint8_t scl = 22);

    // 启动OLED
    bool begin();

    // 清屏并刷新
    void clear();

    // 显示WiFi状态（SSID + IP + 连接状态）
    void showWiFiInfo(const char* ssid, const char* ip, bool connected);

   private:
    // SSD1306驱动实例
    Adafruit_SSD1306 _display;
    uint8_t _addr, _sda, _scl;
};